class Complex
{
	private:
		double real;//atribute
		double imag;//atribute
	public:
		Complex();//constructor implicit
		Complex(double real,double imag);//constructor implicit
		// Complex(Complex& c);//Constructor copiere
		~Complex();//Destructor
		double getReal();//Accesor
		double getImag();//Accesor
		void setReal(double re);//Modificator
		void setImag(double im);//Modificator
		Complex operator+(Complex c);
		Complex operator+(double d);
		Complex operator-(Complex c);
		Complex operator-(double d);
		Complex operator*(Complex c);
		Complex operator*(double d);
		Complex operator/(Complex c);
		Complex operator/(double d);
		Complex operator^(Complex c);
		Complex operator^(double d);
		Complex sqrt(Complex c);
		Complex rt(int g);//radacina de gradul g
		bool operator<(Complex c);
		bool operator<(double d);
		bool operator<=(Complex c);
		bool operator<=(double d);
		bool operator>(Complex c);
		bool operator>(double d);
		bool operator>=(Complex c);
		bool operator>=(double d);
		Complex operator++();
		Complex operator--();
};


typedef Complex TipElem;        //tipul elem. vectorului
class Vector{    
private:    
    TipElem* numbers;           //numerele din vector    
    int     size;        //numarul de numere    
public:    
    Vector();    
    Vector(TipElem*, int);    
    //Vector(const Vector&);    
    ~Vector();        
    Vector& operator+(int);    //adauga un element la Vector    
    Vector& operator-(int);                // elimina elementul dat ca parametru                                // daca acesta nu exista, vectorul e neschimbat    
    Vector& operator+(const Vector&);            //aduna vectorul transmis ca parametru la vectorul curent    
    Vector operator*(const Vector&,const Vector&);    //inmultirea cu un scalar    
    Vector operator**(const Vector&, const TipElem&);   //inmultirea vectorial 
};